package services

import (
	"blockchain-api/internal/config"
	"blockchain-api/internal/database"
	"gorm.io/gorm"
)

// Services 服务集合
type Services struct {
	DB          *gorm.DB
	Config      *config.Config
	Wallet      *WalletService
	Blockchain  *BlockchainService
	Transaction *TransactionService
}

// NewServices 创建服务集合
func NewServices(db *gorm.DB, cfg *config.Config) *Services {
	services := &Services{
		DB:     db,
		Config: cfg,
	}

	// 初始化各个服务
	services.Wallet = NewWalletService(db)
	services.Blockchain = NewBlockchainService(db, cfg)
	services.Transaction = NewTransactionService(db)

	return services
}

// GetDB 获取数据库实例
func (s *Services) GetDB() *gorm.DB {
	return s.DB
}

// GetConfig 获取配置
func (s *Services) GetConfig() *config.Config {
	return s.Config
}

// HealthCheck 健康检查
func (s *Services) HealthCheck() error {
	// 检查数据库连接
	if err := database.HealthCheck(); err != nil {
		return err
	}

	// 检查其他服务
	// 这里可以添加其他服务的健康检查

	return nil
}
